EasyPQCTest.KeysMsgTest

A fun way to imagine how the key system would be used for a Matrix style client

public void KeysMsgTest()
{
    var members = new[] { "Kirito", "Asuna", "Klein", "Lisbeth", "Silica" };
    var publicKeys = new Dictionary<string, Dictionary<string, byte[]>>();
    var privateKeys = new Dictionary<string, Dictionary<string, byte[]>>();

    // Step 1: Everyone generates a keypair
    foreach (var member in members)
    {
        var keys = EasyPQC.Keys.Initiate();
        publicKeys[member] = keys.Item1;
        privateKeys[member] = keys.Item2;
    }

    Console.WriteLine("Everyone has generated their keys!\n");

    // Step 2: Everyone (except Kirito) establishes a shared key with Kirito
    foreach (var member in members)
    {
        if (member == "Kirito") continue;

        var shared = EasyPQC.Keys.CreateSecret(publicKeys["Kirito"]);
        var sharedSecret = shared.key;

        Console.WriteLine($"🔐 {member} → Kirito:");
        Console.WriteLine($"  Shared Secret: {Convert.ToBase64String(sharedSecret)}");

        // Simulating message send using the shared key
        Console.WriteLine($"  Message from {member}: \"Hey Kirito, let's meet up at the mall!\"\n");
    }

    Console.WriteLine("SAO Mall Chat setup complete! 🎉");
}